package com.example.java_chatroom.api;

import com.example.java_chatroom.model.User;
import com.example.java_chatroom.model.UserMapper;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

//进行相关接口的设计；
//登录接口：
//请求：方法：post;
//     body:传递的数据格式；Content_type:application/x-www-from-urlencoded;
//            username=zhangsan&password=123;
//响应：
//  成功：http200
//    Content-Type：application/json;
//{    userId:1
//     username:zhangsan
//     }
//   失败：http200
//     返回一个空的对象：
//
@RestController
public class UseAPI {
    @Resource
    UserMapper userMapper;
    @ResponseBody
    @PostMapping("/login")
    public Object login(String username, String password ,HttpServletRequest request){
        //在进行操作之前：我们先进行根据前端传来的用户名判断一下是否存在该用户，如果不存在直接返回一个空的对象，如果存在就接着进行校验一下密码是否正确；
        User user= userMapper.selectByName(username);
        if(user==null ||user.getPassword()==null || !user.getPassword().equals(password)){
            System.out.println("登录失败！！！：用户名不存在或者输入的密码不正确:"+user);
            //登录失败进行返回一个空的对象
            return new User();
        }
        //登录成功的话，就进行创建一个会话，方便用户下次可以直接进行登录；
        HttpSession session= request.getSession(true);
        session.setAttribute("user",user);
        //成功后，在进行代码返回前，需要进行密码进行相关的处理；
        user.setPassword("");
        return user;
    }


    //用户注册接口的设定；
    @ResponseBody
    @PostMapping("/register")
    public Object register(String username,String password){
        User user=null;
        try{
            user=new User();
            user.setUsername(username);
            user.setPassword(password);
            int ret= userMapper.insert(user);
            System.out.println("ret:"+ret);
        }catch (DuplicateKeyException e){
            user=new User();
            System.out.println("注册失败！！！"+username);
        }
        user.setPassword("");//在进行成功插入前，进行密码的隐藏；
        return user;
    }


}
